package structure.composite;

import java.util.ArrayList;
import java.util.List;

/**
 * 容器。相当于"父"，和子类拥有共同的业务方法
 *
 * @author wangxin213
 * @date 2023/03/08
 */
public class Container extends AbstractContainer{
    private String name;
    // 这里不能使用static，因为每个对象的List都是独占的
    private  final List<Component> LIST = new ArrayList<>();

    //增加成员
    @Override
    public boolean add(Component c) {
        return LIST.add(c);
    }

    //删除成员
    @Override
    public boolean remove(Component c) {
        return LIST.remove(c);
    }

    //获取成员
    @Override
    public Component getChild(int i) {
        return LIST.get(i);
    }


    public Container(String name) {
        this.name = name;
    }

    @Override
    public void operation() {
        System.out.println("---开始对容器:"+name+"执行业务方法---");
        for (Component ele : LIST) {
            ele.operation();
        }
    }
}
